package com.jumper.property.comparer.core.pattern;

import com.jumper.property.comparer.core.annotations.SPI;

@SPI(Integer.MAX_VALUE)
public interface DiffPattern {


    /**
     * 获取普通属性变更规则
     */
    String getPropertyDiffPattern();

    /**
     * 获取组合属性组装连接符
     */
    String getCombinationJoinDiffPattern();

    /**
     * 获取组合属性规则
     */
    String getCombinationDiffPattern();

    /**
     * 获取对象属性规则
     */
    String getObjectDiffPattern();

    /**
     * 获取数组集合属性规则
     */
    String getArrayDiffHeaderPattern();

    /**
     * 数组差异内容规则
     */
    String getArrayDiffBodyPattern(boolean showSuffix);

    /**
     * 数组新增对象规则
     */
    String getArrayAddDiffPattern();

    /**
     * 数组删除对象规则
     */
    String getArrayRemoveDiffPattern();

    /**
     * 数组更新对象规则
     */
    String getArrayUpdateDiffPattern();

    /**
     * 多个diffVal拼接连接符
     */
    String getDiffJoinPattern();

    /**
     * 获取单个对象属性变更连接符
     */
    String getInlineJoinDiffPattern();

    /**
     * 获取对比对象展示名称
     */
    String getCompareObjectDisplayName();
}
